Setup and data wrangling
Load necessary packages
Join the data files
Show code
db1 = read_excel(path = "9762 data for analysis 1.23.24.xlsx", sheet = "Survival")
dataset <- db1 %>%
mutate(
infuse_dt = ymd(infuse_dt),
birthdate = ymd(birthdate),
dt_relapse = ymd(dt_relapse),
Death.or.DLC = ymd(Death.or.DLC),
Death.or.relapse.or.DLC = ymd(Death.or.relapse.or.DLC),
Days.to.death.or.DLC = Death.or.DLC - infuse_dt,
Days.to.death.or.relapse.or.DLC = Death.or.relapse.or.DLC - infuse_dt,
Age = (infuse_dt-birthdate)/365
)
Data tables
Table 1 reproduction
Show code
| Characteristic |
N = 25 |
| Age (years) |
64 (55, 70) |
| Male sex |
16 (64%) |
Survival analysis
Length of follow-up
Show code
data1 = dataset %>%
mutate(
Reverse_death = ifelse(death == 1, 0,1)
)
#quantile(prodlim(Hist(time = Real.days.DLC/30, Real.death )~1, data = data1, reverse = TRUE ) )
reverse_km_OS <- survfit(Surv(Days.to.death.or.DLC/30, Reverse_death) ~ 1, data1)
reverse_km_OS
Call: survfit(formula = Surv(Days.to.death.or.DLC/30, Reverse_death) ~
1, data = data1)
n events median 0.95LCL 0.95UCL
[1,] 25 6 58.6 47.4 NA
Create KM for OS and PFS
Show code
km_OS <- survfit(Surv(Days.to.death.or.DLC/30, death) ~ 1, data = dataset)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS$plot <- OS$plot + geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") + annotate("text", x = med_OS$median + 0.5, y = 0.54, label = paste(signif(med_OS$median, 2), "(95% CI, ", signif(med_OS$lower, 2), "to", signif(med_OS$upper, 2),")"), hjust = 0, size = 5)
OS
Show code
Call: survfit(formula = Surv(Days.to.death.or.DLC/30, death) ~ 1, data = dataset)
n events median 0.95LCL 0.95UCL
[1,] 25 19 32.1 20.4 NA
Show code
Call: survfit(formula = Surv(Days.to.death.or.DLC/30, death) ~ 1, data = dataset)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 3 0.88 0.065 0.761 1
Show code
km_PFS <- survfit(Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~ 1, data = dataset)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS$plot <- PFS$plot + geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") + annotate("text", x = med_PFS$median + 0.5, y = 0.54, label = paste(signif(med_PFS$median, 2), "(95% CI, ", signif(med_PFS$lower, 2), "to", signif(med_PFS$upper, 2),")"), hjust = 0, size = 5)
PFS
Show code
Call: survfit(formula = Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~
1, data = dataset)
n events median 0.95LCL 0.95UCL
[1,] 25 22 18 8.73 27.5
Show code
Call: survfit(formula = Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~
1, data = dataset)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 9 0.64 0.096 0.477 0.859
PFS and OS on the same plot
Show code
OS_EFS <- ggsurvplot_combine(list(km_PFS, km_OS),
data=db,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.3,
tables.theme = theme_cleantable(),
surv.median.line = "hv", # Specify median survival
ggtheme = theme_classic()+
theme(
axis.text.x = element_text(size = 12), # Increase x-axis label font size
axis.text.y = element_text(size = 12), # Increase y-axis label font size
axis.title.x = element_text(size = 14), # Increase x-axis title font size
axis.title.y = element_text(size = 14), # Increase y-axis title font size
plot.title = element_text(size = 12), # Increase plot title font size
legend.text = element_text(size = 12), # Increase legend text font size
legend.title = element_text(size = 12) # Increase legend title font size
),
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "PFS & OS (%)",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
#fun=formula,
legend.labs = c("PFS","OS"),
surv.scale = "percent",
censor=FALSE
)
OS_EFS$plot <- OS_EFS$plot +
geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") +
geom_vline(xintercept = median(km_OS)[1], linetype = "dashed", color = "grey") +
geom_vline(xintercept = median(km_PFS)[1], linetype = "dashed", color = "grey") +
annotate("text", x = med_OS$median + 0.5, y = 0.85, label = paste(signif(med_OS$median, 2), "(", signif(med_OS$lower, 2), "-", signif(med_OS$upper, 2),")"), hjust = 0, size = 5) +
annotate("text", x = med_PFS$median + 0.5, y = 0.95, label = paste(signif(med_PFS$median, 2), "(", signif(med_PFS$lower, 2), "-", signif(med_PFS$upper, 2),")"), hjust = 0, size = 5)
OS_EFS

Create KM for DOR
Show code
km_DOR <- survfit(Surv((Days.to.death.or.relapse.or.DLC-28)/30, relapse) ~ 1, data = dataset)
med_DOR <- surv_median(km_DOR)
DOR <- ggsurvplot(km_DOR,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Duration of response",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
DOR$plot <- DOR$plot + geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") + annotate("text", x = med_DOR$median + 0.5, y = 0.54, label = paste(signif(med_DOR$median, 2), "(95% CI, ", signif(med_DOR$lower, 2), "to", signif(med_DOR$upper, 2),")"), hjust = 0, size = 5)
DOR
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC - 28)/30,
relapse) ~ 1, data = dataset)
n events median 0.95LCL 0.95UCL
[1,] 25 22 17.1 7.8 26.6
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC - 28)/30,
relapse) ~ 1, data = dataset)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 11 0.56 0.0993 0.396 0.793
Stratified survival analysis
Create KM for OS and PFS, stratify by HRCA
Show code
km_OS <- survfit(Surv(Days.to.death.or.DLC/30, death) ~ HRCA, data = dataset)
km_OS
Call: survfit(formula = Surv(Days.to.death.or.DLC/30, death) ~ HRCA,
data = dataset)
n events median 0.95LCL 0.95UCL
HRCA=0 10 7 32.1 18.5 NA
HRCA=1 15 12 27.5 17.7 NA
Show code
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black"),
legend.labs = c("Standard","High risk")
)
#OS$plot <- OS$plot + geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") + annotate("text", x = med_OS$median + 0.5, y = 0.54, label = paste("Median =", signif(med_OS$median, 2), "(95% CI, ", signif(med_OS$lower, 2), "to", signif(med_OS$upper, 2),")"), hjust = 0, size = 5)
OS
Show code
km_PFS <- survfit(Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~ HRCA, data = dataset)
km_PFS
Call: survfit(formula = Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~
HRCA, data = dataset)
n events median 0.95LCL 0.95UCL
HRCA=0 10 8 20.6 7.33 NA
HRCA=1 15 14 14.0 8.73 NA
Show code
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black"),
legend.labs = c("Standard","High risk")
)
#PFS$plot <- PFS$plot + geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") + annotate("text", x = med_PFS$median + 0.5, y = 0.54, label = paste("Median =", signif(med_PFS$median, 2), "(95% CI, ", signif(med_PFS$lower, 2), "to", signif(med_PFS$upper, 2),")"), hjust = 0, size = 5)
PFS

KM of OS & PFS, stratified by cell dose
Show code
km_PFS <- survfit(Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~ intended_cell_dose, data = dataset)
km_PFS
Call: survfit(formula = Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~
intended_cell_dose, data = dataset)
n events median 0.95LCL 0.95UCL
intended_cell_dose=5e+07 7 6 18.00 5.87 NA
intended_cell_dose=1.5e+08 8 7 24.32 12.20 NA
intended_cell_dose=3e+08 7 6 23.20 12.63 NA
intended_cell_dose=4.5e+08 3 3 7.87 3.07 NA
Show code
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.4,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black"),
#legend.labs = c("Standard","High risk")
)
PFS
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ intended_cell_dose, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.4,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ intended_cell_dose,
data = data1)
n events median 0.95LCL 0.95UCL
intended_cell_dose=5e+07 7 7 25.4 10.1 NA
intended_cell_dose=1.5e+08 8 4 58.4 27.5 NA
intended_cell_dose=3e+08 7 5 32.1 20.4 NA
intended_cell_dose=4.5e+08 3 3 18.5 16.6 NA
KM of PFS, dose level 1 vs 2-4
Show code
data1 <- dataset %>%
mutate(
dose_level = ifelse(intended_cell_dose == "5e+07","1","2-4")
)
km_PFS <- survfit(Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~ dose_level, data = data1)
km_PFS
Call: survfit(formula = Surv(Days.to.death.or.relapse.or.DLC/30, relapse) ~
dose_level, data = data1)
n events median 0.95LCL 0.95UCL
dose_level=1 7 6 18.0 5.87 NA
dose_level=2-4 18 16 17.5 8.73 37.4
Show code
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("1","2-4"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black"),
#legend.labs = c("Standard","High risk")
)
#PFS$plot <- PFS$plot + geom_hline(yintercept = 0.5, linetype = "dashed", color = "grey") + annotate("text", x = med_PFS$median + 0.5, y = 0.54, label = paste("Median =", signif(med_PFS$median, 2), "(95% CI, ", signif(med_PFS$lower, 2), "to", signif(med_PFS$upper, 2),")"), hjust = 0, size = 5)
PFS

Create KM for OS, stratified by sCR/CR vs VGPR/PR
Show code
data1 <- dataset %>%
mutate(
response.category = recode(best_response, "scr" = "sCR/CR", "cr" = "sCR/CR", "vgpr" = "VGPR/PR", "pr"="VGPR/PR")
)
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ response.category, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("sCR/CR","VGPR/PR"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ response.category,
data = data1)
n events median 0.95LCL 0.95UCL
response.category=sCR/CR 17 12 35.5 27.5 NA
response.category=VGPR/PR 8 7 19.1 17.1 NA
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC-28)/30, relapse) ~ response.category, data = data1)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("sCR/CR","VGPR/PR"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC - 28)/30,
relapse) ~ response.category, data = data1)
n events median 0.95LCL 0.95UCL
response.category=sCR/CR 17 14 20.20 17.07 36.5
response.category=VGPR/PR 8 8 7.28 6.93 NA
Create KM for OS & PFS, stratified by treatment lines <8 vs >=8
Show code
data1 <- dataset %>%
mutate(
prior.lines.8 = ifelse(no_priortx >=8, 1,0)
)
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ prior.lines.8, data = data1)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("<8","\u22658"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ prior.lines.8, data = data1)
n events median 0.95LCL 0.95UCL
prior.lines.8=0 11 10 12.6 8.37 NA
prior.lines.8=1 14 12 21.1 12.20 NA
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ prior.lines.8, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("<8","\u22658"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ prior.lines.8,
data = data1)
n events median 0.95LCL 0.95UCL
prior.lines.8=0 11 7 20.4 17.7 NA
prior.lines.8=1 14 12 33.0 25.4 NA
Create KM for OS & PFS, stratified by hx of prior allo
Show code
data1 <- dataset %>%
mutate(
prior.lines.8 = ifelse(no_priortx >=8, 1,0)
)
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ allo, data = data1)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ allo, data = data1)
n events median 0.95LCL 0.95UCL
allo=0 20 18 16.0 8.07 31.7
allo=1 5 4 21.1 12.20 NA
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ allo, data = data1)
allo=0
time n.risk n.event survival std.err
12.000 12.000 8.000 0.600 0.110
lower 95% CI upper 95% CI
0.420 0.858
allo=1
time n.risk n.event survival std.err
12.000 4.000 1.000 0.800 0.179
lower 95% CI upper 95% CI
0.516 1.000
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ allo, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ allo,
data = data1)
n events median 0.95LCL 0.95UCL
allo=0 20 15 27.5 20.4 NA
allo=1 5 4 61.5 17.7 NA
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ allo,
data = data1)
allo=0
time n.risk n.event survival std.err
12.0000 17.0000 3.0000 0.8500 0.0798
lower 95% CI upper 95% CI
0.7071 1.0000
allo=1
time n.risk n.event survival std.err
12 5 0 1 0
lower 95% CI upper 95% CI
1 1
Create KM for OS & PFS, stratified by receipt of prior BCMA-directed therapy
Show code
data1 <- dataset %>%
mutate(
prior.lines.8 = ifelse(no_priortx >=8, 1,0)
)
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ any_bcma_tx, data = data1)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ any_bcma_tx, data = data1)
n events median 0.95LCL 0.95UCL
any_bcma_tx=0 22 19 18.0 8.73 31.7
any_bcma_tx=1 3 3 12.2 5.87 NA
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ any_bcma_tx, data = data1)
any_bcma_tx=0
time n.risk n.event survival std.err
12.000 14.000 8.000 0.636 0.103
lower 95% CI upper 95% CI
0.464 0.873
any_bcma_tx=1
time n.risk n.event survival std.err
12.000 2.000 1.000 0.667 0.272
lower 95% CI upper 95% CI
0.300 1.000
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ any_bcma_tx, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ any_bcma_tx,
data = data1)
n events median 0.95LCL 0.95UCL
any_bcma_tx=0 22 17 27.5 20.4 NA
any_bcma_tx=1 3 2 32.1 10.1 NA
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ any_bcma_tx,
data = data1)
any_bcma_tx=0
time n.risk n.event survival std.err
12.0000 20.0000 2.0000 0.9091 0.0613
lower 95% CI upper 95% CI
0.7966 1.0000
any_bcma_tx=1
time n.risk n.event survival std.err
12.000 2.000 1.000 0.667 0.272
lower 95% CI upper 95% CI
0.300 1.000
Create KM for OS & PFS, stratified by triple refractory disease
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ triple_ref, data = dataset)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ triple_ref, data = dataset)
n events median 0.95LCL 0.95UCL
triple_ref=0 5 5 12.2 8.37 NA
triple_ref=1 20 17 18.0 8.73 37.4
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ triple_ref, data = dataset)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ triple_ref,
data = dataset)
n events median 0.95LCL 0.95UCL
triple_ref=0 5 4 27.5 18.5 NA
triple_ref=1 20 15 32.1 20.4 NA
Create KM for OS & PFS, stratified by penta refractory disease
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ pentaref, data = dataset)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ pentaref, data = dataset)
n events median 0.95LCL 0.95UCL
pentaref=0 8 7 16.0 12.20 NA
pentaref=1 17 15 21.1 8.07 37.4
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ triple_ref, data = dataset)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ triple_ref,
data = dataset)
n events median 0.95LCL 0.95UCL
triple_ref=0 5 4 27.5 18.5 NA
triple_ref=1 20 15 32.1 20.4 NA
Create KM for OS & PFS, stratified by tumor burden (BMPCs <=30 vs >30)
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ High.tumor.burden, data = dataset)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ High.tumor.burden, data = dataset)
n events median 0.95LCL 0.95UCL
High.tumor.burden=0 8 7 24.3 18.00 NA
High.tumor.burden=1 17 15 12.6 8.37 NA
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ High.tumor.burden, data = dataset)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ High.tumor.burden,
data = dataset)
n events median 0.95LCL 0.95UCL
High.tumor.burden=0 8 5 48.6 33.0 NA
High.tumor.burden=1 17 14 22.8 17.7 NA
Show code
[1] 2.915
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC-90)/30, relapse) ~ sBCMA.high, data = data1)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC - 90)/30,
relapse) ~ sBCMA.high, data = data1)
n events median 0.95LCL 0.95UCL
sBCMA.high=0 10 10 21.80 15.00 NA
sBCMA.high=1 10 8 7.28 4.33 NA
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC-90)/30, death) ~ sBCMA.high, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC - 90)/30, death) ~
sBCMA.high, data = data1)
n events median 0.95LCL 0.95UCL
sBCMA.high=0 10 7 55.4 30.0 NA
sBCMA.high=1 10 8 18.5 12.5 NA
Show code
[1] 5.415
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC-60)/30, relapse) ~ sBCMA.high, data = data1)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC - 60)/30,
relapse) ~ sBCMA.high, data = data1)
n events median 0.95LCL 0.95UCL
sBCMA.high=0 12 11 19.1 10.63 NA
sBCMA.high=1 12 10 11.1 6.07 NA
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC-60)/30, death) ~ sBCMA.high, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC - 60)/30, death) ~
sBCMA.high, data = data1)
n events median 0.95LCL 0.95UCL
sBCMA.high=0 12 8 33.5 23.4 NA
sBCMA.high=1 12 10 17.1 13.5 NA
Create KM for OS & PFS, stratified by BCMA ABC at screening
Show code
[1] 620
Show code
km_PFS <- survfit(Surv((Days.to.death.or.relapse.or.DLC)/30, relapse) ~ BCMA.high, data = data1)
med_PFS <- surv_median(km_PFS)
PFS <- ggsurvplot(km_PFS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Progression-free survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
PFS
Show code
Call: survfit(formula = Surv((Days.to.death.or.relapse.or.DLC)/30,
relapse) ~ BCMA.high, data = data1)
n events median 0.95LCL 0.95UCL
BCMA.high=0 12 11 13.3 8.07 NA
BCMA.high=1 13 11 21.1 8.37 NA
Show code
km_OS <- survfit(Surv((Days.to.death.or.DLC)/30, death) ~ BCMA.high, data = data1)
med_OS <- surv_median(km_OS)
OS <- ggsurvplot(km_OS,
pval=TRUE,
conf.int = TRUE,
risk.table = TRUE, # Add risk table
fontsize = 6,
risk.table.col = "strata", # Change risk table color by groups
tables.height = 0.25,
tables.theme = theme_cleantable(),
#surv.median.line = "hv", # Specify median survival
#ggtheme = theme_bw(), # Change ggplot2 theme
#palette = c("#E7B800", "#2E9FDF"),
xlab="Time (months)", ylab = "Overall survival",
xlim = c(0,65), break.x.by = c(12),
ylim = c(0,1), break.y.by = c(0.25),
legend.labs = c("Low","High"),
legend = "none",
surv.scale="percent",
font.main = c(16, "plain", "black"),
font.x = c(16, "plain", "black"),
font.y = c(16, "plain", "black"),
font.caption = c(16, "plain", "black"),
font.tickslab = c(16, "plain", "black")
)
OS
Show code
Call: survfit(formula = Surv((Days.to.death.or.DLC)/30, death) ~ BCMA.high,
data = data1)
n events median 0.95LCL 0.95UCL
BCMA.high=0 12 8 22.8 18.5 NA
BCMA.high=1 13 11 35.5 17.7 NA
Regression analysis
Cox regression
Show code
theme_gtsummary_compact()
preds <- c("HRCA", "cnLOH", "response.category", "intended_cell_dose", "High.tumor.burden","any_bcma_tx","pentaref","triple_ref", "sBCMA.d90", "sBCMA.d60")
data1 <- dataset %>%
mutate(
response.category = recode(best_response, "scr" = "sCR/CR", "cr" = "sCR/CR", "vgpr" = "VGPR/PR", "pr"="VGPR/PR"),
intended_cell_dose = log10(intended_cell_dose)
)
uv_tab_OS <- tbl_uvregression(
data1[c(preds)],
method = coxph,
y = Surv(data1$Days.to.death.or.DLC, data1$death),
exponentiate = TRUE
) %>%
sort_p()
uv_tab_PFS <- tbl_uvregression(
data1[c(preds)],
method = coxph,
y = Surv(data1$Days.to.death.or.relapse.or.DLC, data1$relapse),
exponentiate = TRUE
)
tbl_merge(list(uv_tab_OS, uv_tab_PFS), tab_spanner = c("**OS**", "**PFS**"))
| Characteristic |
OS
|
PFS
|
| N |
HR |
95% CI |
p-value |
N |
HR |
95% CI |
p-value |
| sBCMA.d90 |
21 |
1.12 |
1.03, 1.22 |
0.006 |
21 |
1.10 |
1.00, 1.21 |
0.045 |
| sBCMA.d60 |
24 |
1.04 |
1.01, 1.07 |
0.007 |
24 |
1.04 |
1.01, 1.08 |
0.018 |
| response.category |
25 |
|
|
|
25 |
|
|
|
| sCR/CR |
|
— |
— |
|
|
— |
— |
|
| VGPR/PR |
|
3.22 |
1.15, 9.06 |
0.027 |
|
2.01 |
0.82, 4.95 |
0.13 |
| High.tumor.burden |
25 |
2.97 |
0.96, 9.21 |
0.059 |
25 |
2.65 |
0.92, 7.66 |
0.072 |
| intended_cell_dose |
25 |
1.80 |
0.35, 9.17 |
0.5 |
25 |
0.82 |
0.18, 3.67 |
0.8 |
| cnLOH |
22 |
1.23 |
0.42, 3.59 |
0.7 |
22 |
0.99 |
0.36, 2.69 |
>0.9 |
| pentaref |
25 |
0.85 |
0.31, 2.33 |
0.8 |
25 |
0.72 |
0.28, 1.85 |
0.5 |
| triple_ref |
25 |
0.91 |
0.30, 2.81 |
0.9 |
25 |
0.65 |
0.24, 1.81 |
0.4 |
| HRCA |
25 |
0.95 |
0.36, 2.50 |
>0.9 |
25 |
1.31 |
0.55, 3.16 |
0.5 |
| any_bcma_tx |
25 |
1.09 |
0.24, 4.85 |
>0.9 |
25 |
1.92 |
0.54, 6.76 |
0.3 |
Probability plots
Hazard of OS vs sBCMA d90
Show code
data1 <- dataset %>%
select(sBCMA.d90, Days.to.death.or.DLC, death) %>%
filter(!is.na(sBCMA.d90))%>%
mutate(
sBCMA.high = ifelse(sBCMA.d90 >= median(sBCMA.d90),1,0)
)
dd <- datadist(data1)
options(datadist='dd')
S <- Surv(data1$Days.to.death.or.DLC, data1$death)
f <- cph(S ~ sBCMA.d90, x=TRUE, y=TRUE,surv=TRUE,data=data1)
model <- Predict(f, sBCMA.d90, fun=function(x) exp(x) )
ggplot(as.data.frame(model),aes(x=sBCMA.d90, y=yhat)) +
geom_ribbon(data = model, aes(ymin=lower, ymax=upper), alpha=0.2, linetype=0) +
geom_line() +
theme_bw() +
labs(
x = "sBCMA d90",
y = "OS (hazard)") +
theme(title = element_text(size=16,face="bold"),legend.title=element_blank())

Hazard of OS vs screening BCMA ABC
Show code
data1 <- dataset %>%
select(bcma_scrn, Days.to.death.or.DLC, death)
dd <- datadist(data1)
options(datadist='dd')
S <- Surv(data1$Days.to.death.or.DLC, data1$death)
f <- cph(S ~ rcs(bcma_scrn,3), x=TRUE, y=TRUE,surv=TRUE,data=data1)
model <- Predict(f, bcma_scrn, fun=function(x) exp(x) )
ggplot(as.data.frame(model),aes(x=bcma_scrn, y=yhat)) +
geom_ribbon(data = model, aes(ymin=lower, ymax=upper), alpha=0.2, linetype=0) +
geom_line() +
theme_bw() +
labs(
x = "sBCMA d90",
y = "OS (hazard)") +
theme(title = element_text(size=16,face="bold"),legend.title=element_blank())
